Color management systems attempt to compensate for the different color capabilities of devices, viewing conditions, and subjective preferences. Different devices interpret and reproduce color differently and are often referred to as having disparate color capabilities. In particular, each device has a limited range of colors (e.g., as represented by lightness, chroma, and hue) that the device may detect and/or produce. This limited range is often referred to as the device color gamut. As a result of different device color capabilities, color data may appear visually different when displayed on two separate devices. For instance, a document displayed on a monitor may appear visually different when displayed on a different monitor or printed on a printer. Further, it should be noted that as opposed to being associated with an actual device, color data may be associated with a virtual device, such as stored on disk in a file format representative of a virtual device (e.g., sRGB) that has associated color characteristics, for example. Accordingly, as used herein, the term “device” may refer to either an actual device or a virtual device.
In order to compensate for the different color capabilities of devices, color management systems may apply color transformations to color data in order to map the colors from a source device to a destination device, typically using profiles for each device that describe parameters, such as native device capabilities, viewing conditions, and subjective preferences. The profiles associated with each device may either implicitly or explicitly set forth each of these parameters.
A key component of color management is the conversion of color data from the profile associated with one device (e.g., an actual device such as a digital camera or a virtual device such as sRGB) to the profile associated with another device (e.g., a monitor or other display). That is, color management attempts to ensure that a desired reproduction of the color data derived from a source device is output on a destination device. As more fully described below, such color management conversions are generally based on a color profile associated with the source device and a color profile associated with the destination device, each of which includes a tone curve and a color matrix, and are computationally intensive.
One current approach to color management is profile management. The most common implementation of this approach is the International Color Consortium (ICC) standard. Under this approach, each device has a profile that characterizes the relationship between the device capabilities and the human visual system as described by a non-linear ICC profile connection space (PCS). Color transformations between devices may be created using the device color profiles. The color transformation may then be applied to convert color data between the devices. When utilizing the profile management approach, the tone curve and the color matrix associated with the device are typically confounded and hard coded into a color profile that is associated with the device itself.
Additionally, color data processing, e.g., photographic image processing, is generally performed utilizing a Central Processing Unit (CPU). While CPUs can effectively process color data in most instances, such processing is typically rather slow leading to user frustration and overall dissatisfaction with the color data processing application.